deno outdated
#Deno #jsr #npm #deno.json #deno.lock
概要
deno outdatedはDeno v2.1で追加された依存関係の管理用コマンドです
使い方
各依存パッケージの最新バージョンの表示
引数なしでdeno outdatedを実行すると、各依存パッケージの最新バージョンなどを確認できます
依存パッケージの更新
--updateオプションを指定すると、依存パッケージを更新できます
code:shell
# deno.jsonで宣言されたバージョン要求に基づき、指定したパターンにマッチするパッケージを更新
$ deno outdated --update "@nestjs/*"
# アップデート先のバージョンを明示する
$ deno outdated --update @nestjs/common@^10.4.8 @nestjs/core@^10.4.8
# 最新バージョンへの更新
$ deno outdated --update --latest "@nestjs/*"
その他
deno.jsonの宣言を変更せずにdeno.lockのみを更新する
1. 例えば、deno.jsonで以下のように定義されているケースがあったとします
code:deno.json
{
"imports": {
"@hono/hono": "jsr:@hono/hono@^4"
}
}
2. ソースコードにおいては以下のようにパッケージを参照しています
code:mod.ts
import { Hono } from "@hono/hono";
3. この場合に、deno outdatedでバージョンを更新してみます
code:shell
$ deno outdated --update --latest @hono/hono
4. すると、以下のようにdeno.jsonも更新されてしまいます
code:deno.json
{
"imports": {
"@hono/hono": "jsr:@hono/hono@^4.6.14"
}
}
5. jsrにパッケージを公開する場合、deno.jsonは更新せずにdeno.lockのみを更新できると理想的です
6. これを実現するには、今のところ少し工夫が必要そうです
code:shell
# (1) deno.jsonとdeno.lockからアップデートしたいパッケージの定義を削除する
$ deno remove @hono/hono
# (2) deno.jsonを更新前の状態に戻す
$ git restore deno.json
# (3) deno.lockを更新するために、アップデートしたいパッケージに依存するモジュールに対して以下を実行する
$ deno install --entrypoint mod.ts
関連ページ
deno add
deno install
deno remove
deno.lock